gtkeventcontrollerlegacy: Make public
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 12 Oct 2018 15:30:59 +0000 (17:30 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 15 Oct 2018 15:39:04 +0000 (17:39 +0200)
And move ::event into it, dropping the GtkWidget::event signal.

gtk/gtk.h
gtk/gtkeventcontrollerlegacy.c
gtk/gtkeventcontrollerlegacy.h [new file with mode: 0644]
gtk/gtkeventcontrollerlegacyprivate.h [deleted file]
gtk/gtkwidget.c
gtk/gtkwidgetprivate.h
gtk/meson.build

index 823c079e6e13a337cd32c76171c5afcd2423347c..cf89eca9ab12002d1ac43eea9f62a1d2c591af29 100644 (file)
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
@@ -94,6 +94,7 @@
 #include <gtk/gtkenums.h>
 #include <gtk/gtkeventcontroller.h>
 #include <gtk/gtkeventcontrollerkey.h>
+#include <gtk/gtkeventcontrollerlegacy.h>
 #include <gtk/gtkeventcontrollermotion.h>
 #include <gtk/gtkeventcontrollerscroll.h>
 #include <gtk/gtkexpander.h>
index ebe852249b55b7d6d2cef2d3d79a2954d783b9ba..33b38203f5dc1fd81c11dc5755f4de8ef3ebf137 100644 (file)
  */
 
 #include "config.h"
-#include "gtkeventcontrollerlegacyprivate.h"
+#include "gtkeventcontrollerlegacy.h"
+#include "gtkeventcontrollerprivate.h"
+#include "gtkmarshalers.h"
+#include "gtkintl.h"
+#include "gtkprivate.h"
+
+struct _GtkEventControllerLegacy
+{
+  GtkEventController parent_instance;
+};
+
+struct _GtkEventControllerLegacyClass
+{
+  GtkEventControllerClass parent_class;
+};
+
+enum {
+  EVENT,
+  N_SIGNALS
+};
+
+static guint signals[N_SIGNALS] = { 0, };
 
 G_DEFINE_TYPE (GtkEventControllerLegacy, gtk_event_controller_legacy,
                GTK_TYPE_EVENT_CONTROLLER)
@@ -27,9 +48,11 @@ static gboolean
 gtk_event_controller_legacy_handle_event (GtkEventController *controller,
                                           const GdkEvent     *event)
 {
-  GtkWidget *widget = gtk_event_controller_get_widget (controller);
+  gboolean handled;
 
-  return gtk_widget_emit_event_signals (widget, event);
+  g_signal_emit (controller, signals[EVENT], 0, event, &handled);
+
+  return handled;
 }
 
 static void
@@ -38,6 +61,29 @@ gtk_event_controller_legacy_class_init (GtkEventControllerLegacyClass *klass)
   GtkEventControllerClass *controller_class = GTK_EVENT_CONTROLLER_CLASS (klass);
 
   controller_class->handle_event = gtk_event_controller_legacy_handle_event;
+
+  /**
+   * GtkEventController::event:
+   * @controller: the object which received the signal.
+   * @event: the #GdkEvent which triggered this signal
+   *
+   * The GTK+ main loop will emit this signal for each GDK event delivered
+   * to @controller.
+   *
+   * Returns: %TRUE to stop other handlers from being invoked for the event
+   * and to cancel the emission of the second specific ::event signal.
+   *   %FALSE to propagate the event further.
+   */
+  signals[EVENT] =
+    g_signal_new (I_("event"),
+                 G_TYPE_FROM_CLASS (klass),
+                 G_SIGNAL_RUN_LAST,
+                 0, _gtk_boolean_handled_accumulator, NULL,
+                 _gtk_marshal_BOOLEAN__OBJECT,
+                 G_TYPE_BOOLEAN, 1,
+                 GDK_TYPE_EVENT);
+  g_signal_set_va_marshaller (signals[EVENT], G_TYPE_FROM_CLASS (klass),
+                              _gtk_marshal_BOOLEAN__OBJECTv);
 }
 
 static void
diff --git a/gtk/gtkeventcontrollerlegacy.h b/gtk/gtkeventcontrollerlegacy.h
new file mode 100644 (file)
index 0000000..748bebb
--- /dev/null
@@ -0,0 +1,49 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2017, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author(s): Carlos Garnacho <carlosg@gnome.org>
+ */
+
+#ifndef __GTK_EVENT_CONTROLLER_LEGACY_H__
+#define __GTK_EVENT_CONTROLLER_LEGACY_H__
+
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#include <gtk/gtkeventcontroller.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_EVENT_CONTROLLER_LEGACY         (gtk_event_controller_legacy_get_type ())
+#define GTK_EVENT_CONTROLLER_LEGACY(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacy))
+#define GTK_EVENT_CONTROLLER_LEGACY_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
+#define GTK_IS_EVENT_CONTROLLER_LEGACY(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
+#define GTK_IS_EVENT_CONTROLLER_LEGACY_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
+#define GTK_EVENT_CONTROLLER_LEGACY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
+
+typedef struct _GtkEventControllerLegacy GtkEventControllerLegacy;
+typedef struct _GtkEventControllerLegacyClass GtkEventControllerLegacyClass;
+
+GDK_AVAILABLE_IN_ALL
+GType               gtk_event_controller_legacy_get_type   (void) G_GNUC_CONST;
+
+GDK_AVAILABLE_IN_ALL
+GtkEventController *gtk_event_controller_legacy_new        (void);
+
+G_END_DECLS
+
+#endif /* __GTK_EVENT_CONTROLLER_LEGACY_H__ */
diff --git a/gtk/gtkeventcontrollerlegacyprivate.h b/gtk/gtkeventcontrollerlegacyprivate.h
deleted file mode 100644 (file)
index 61059a0..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2017, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Author(s): Carlos Garnacho <carlosg@gnome.org>
- */
-
-#ifndef __GTK_EVENT_CONTROLLER_LEGACY_H__
-#define __GTK_EVENT_CONTROLLER_LEGACY_H__
-
-#include "gtkeventcontrollerprivate.h"
-#include "gtkwidgetprivate.h"
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_EVENT_CONTROLLER_LEGACY         (gtk_event_controller_legacy_get_type ())
-#define GTK_EVENT_CONTROLLER_LEGACY(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacy))
-#define GTK_EVENT_CONTROLLER_LEGACY_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
-#define GTK_IS_EVENT_CONTROLLER_LEGACY(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
-#define GTK_IS_EVENT_CONTROLLER_LEGACY_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
-#define GTK_EVENT_CONTROLLER_LEGACY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
-
-typedef struct _GtkEventControllerLegacy GtkEventControllerLegacy;
-typedef struct _GtkEventControllerLegacyClass GtkEventControllerLegacyClass;
-
-struct _GtkEventControllerLegacy
-{
-  GtkEventController parent_instance;
-};
-
-struct _GtkEventControllerLegacyClass
-{
-  GtkEventControllerClass parent_class;
-};
-
-GType               gtk_event_controller_legacy_get_type   (void) G_GNUC_CONST;
-GtkEventController *gtk_event_controller_legacy_new        (void);
-
-#endif /* __GTK_EVENT_CONTROLLER_LEGACY_H__ */
index 3044231eab2563ed9adaea9a545851a24ae35fce..a61de0dd996d9cfe527a05498c8e2fc92804a187 100644 (file)
@@ -1689,30 +1689,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
                   G_TYPE_BOOLEAN, 1,
                   GTK_TYPE_DIRECTION_TYPE);
 
-  /**
-   * GtkWidget::event:
-   * @widget: the object which received the signal.
-   * @event: the #GdkEvent which triggered this signal
-   *
-   * The GTK+ main loop will emit this signal for each GDK event delivered
-   * to a widget.
-   *
-   * Returns: %TRUE to stop other handlers from being invoked for the event
-   * and to cancel the emission of the second specific ::event signal.
-   *   %FALSE to propagate the event further.
-   */
-  widget_signals[EVENT] =
-    g_signal_new (I_("event"),
-                 G_TYPE_FROM_CLASS (klass),
-                 G_SIGNAL_RUN_LAST | G_SIGNAL_DEPRECATED,
-                 G_STRUCT_OFFSET (GtkWidgetClass, event),
-                 _gtk_boolean_handled_accumulator, NULL,
-                 _gtk_marshal_BOOLEAN__OBJECT,
-                 G_TYPE_BOOLEAN, 1,
-                 GDK_TYPE_EVENT);
-  g_signal_set_va_marshaller (widget_signals[EVENT], G_TYPE_FROM_CLASS (klass),
-                              _gtk_marshal_BOOLEAN__OBJECTv);
-
   /**
    * GtkWidget::drag-leave:
    * @widget: the object which received the signal.
@@ -5306,22 +5282,6 @@ gtk_widget_event_internal (GtkWidget      *widget,
   return return_val;
 }
 
-gboolean
-gtk_widget_emit_event_signals (GtkWidget      *widget,
-                               const GdkEvent *event)
-{
-  gboolean return_val = FALSE, handled;
-
-  g_object_ref (widget);
-
-  g_signal_emit (widget, widget_signals[EVENT], 0, event, &handled);
-  return_val |= handled | !WIDGET_REALIZED_FOR_EVENT (widget, event);
-
-  g_object_unref (widget);
-
-  return return_val;
-}
-
 /**
  * gtk_widget_activate:
  * @widget: a #GtkWidget that’s activatable
index 0cadb237fbb3fcaef87bb72a15a348ccdb9b42a6..f65881135892bd2122912985df82400972be53ce 100644 (file)
@@ -324,11 +324,6 @@ void              gtk_widget_set_pass_through              (GtkWidget *widget,
                                                             gboolean   pass_through);
 gboolean          gtk_widget_get_pass_through              (GtkWidget *widget);
 
-gboolean          gtk_widget_emit_event_signals            (GtkWidget      *widget,
-                                                            const GdkEvent *event);
-
-void              gtk_widget_init_legacy_controller        (GtkWidget *widget);
-
 void              gtk_widget_get_origin_relative_to_parent (GtkWidget        *widget,
                                                             int              *origin_x,
                                                             int              *origin_y);
index 96a0c4283f5f1a52ec75181931984d1e09386fe2..8559ed0f7c5fdcd7bd931d7075d56597a1ee0349 100644 (file)
@@ -101,7 +101,6 @@ gtk_private_sources = files([
   'gtkcssvalue.c',
   'gtkcsswidgetnode.c',
   'gtkcsswin32sizevalue.c',
-  'gtkeventcontrollerlegacy.c',
   'gtkfilechooserembed.c',
   'gtkfilechooserentry.c',
   'gtkfilechoosererrorstack.c',
@@ -399,7 +398,6 @@ gtk_public_sources = files([
 gtk_private_type_headers = files([
   'gtkcsstypesprivate.h',
   'gtktexthandleprivate.h',
-  'gtkeventcontrollerlegacyprivate.h',
 ])
 
 gtk_public_headers = files([
@@ -471,6 +469,7 @@ gtk_public_headers = files([
   'gtkeventcontrollerkey.h',
   'gtkeventcontrollerscroll.h',
   'gtkeventcontrollermotion.h',
+  'gtkeventcontrollerlegacy.h',
   'gtkexpander.h',
   'gtkfilechooser.h',
   'gtkfilechooserbutton.h',